﻿package com.demo;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import com.utils.ConstantUtil;
import com.utils.HttpHelper;
import com.utils.HttpResponse;
import com.utils.JsonUtil;

/**
 * 纯API接口版（有密支付）
 *
 * @date: 2017-5-11 下午3:09:12 
 * @author 任帅
 */
public class APIPwdPayTest {
	
	public static void main(String[] args) {
		placeOrder();
	}
	
	/**
	 * 
	 * placeOrder:(发送请求). 
	 *
	 * @author 任帅
	 * @return
	 */
	public static String placeOrder(){
		Map<String,String> reqMap = assembleParameter();
		String reqStr = "reqJson=" + JsonUtil.map2Json(reqMap);
		HttpResponse resp = HttpHelper.doHttp(ConstantUtil.TESTURL, "POST","UTF-8", reqStr, "600000");
		String body = resp.getBody();
		Map<String,String> map = JsonUtil.jsonToMap(body);
		Set<String> set = map.keySet();
		  
		for(Iterator<String> iter = set.iterator(); iter.hasNext();){
			String key = (String)iter.next();
		    String value = (String)map.get(key);
		    System.out.println(key+"===="+value);
		}
		return null;
	}
	
	/**
	 * 
	 * assembleParameter:(拼装请求参数). 
	 *
	 * @author 任帅
	 * @return
	 */
	public static Map<String,String> assembleParameter(){
		Map<String, String> resMap = new HashMap<String, String>();
		try{
			EncryptManager encryptManager = new EncryptManager();
			encryptManager.initEncrypt();
			
			resMap.put("TradeCode", "PayQuickByAccPwd");
			resMap.put("Version", ConstantUtil.VERSION);
			resMap.put("MobKey", encryptManager.getMobKey());
			
			//请求加密字段
			resMap.put("MerchantId", encryptManager.getEncryptDES(ConstantUtil.MERCHANTID));  //商户号
			resMap.put("Amount", encryptManager.getEncryptDES("1000.01")); //支付金额
			resMap.put("MobileNo", encryptManager.getEncryptDES("15874070907")); //手机号码
			resMap.put("Name", encryptManager.getEncryptDES("拉克丝")); //客户姓名
			resMap.put("CertNo", encryptManager.getEncryptDES("4301221918")); //身份证号码
			resMap.put("BankAccount", encryptManager.getEncryptDES("62290106860")); //银行卡号
			resMap.put("Pwd", encryptManager.getEncryptDES("0314231")); //银行卡密码 3、	银行卡密码： 123456  4、	信用卡CVN： 随意填写3位数字

			
			resMap.put("MerchOrderId", "API"+System.currentTimeMillis()); //商户订单号
			resMap.put("BgUrl", ""); //商户回调地址
			
			//以下是D0必填项
//			resMap.put("SettleType", "1"); //清算类型 0(t+1)清算 / 1(D0)清算
//			resMap.put("IsSettlement", "0"); //1不清算  0自动清算
//			resMap.put("AccNo", "6228480082236012321"); //收款人卡号
//			resMap.put("AccName", "舒卡勒托"); //收款人姓名
//			resMap.put("SettleAmt", "88.88"); //付款金额
//			
//			//以下是D0选填项，为提高代付成功率，建议用户填写
//			resMap.put("AccProvince", "湖南"); //开户行省份
//			resMap.put("AccCity", "长沙"); //开户行城市
//			resMap.put("AccbankName", "高新区支行"); //开户支行名称
//			resMap.put("AccType", "0");// 0私人 1公司 不填默认私人
//			
			//签名  签名参数： 具体字段参考文档
			//TradeCode,MobKey
			String[] signNames = {"TradeCode", "MobKey"};
			resMap.put("sign", encryptManager.getReqSign(signNames, resMap));
		}catch(Exception e){
			e.printStackTrace();
		}
		return resMap;
	}
}
